<?php
/**
 * Глобальный класс управления геообъектами
 * 
 * @category Phorm
 * @package Geo
 * @name /Phorm/Geo.php
 * @copyright phorm.ru
 * @since 26.09.2013
 * @author vladimir@kachalov.net
 */

class Phorm_Geo extends Phorm_Model {
	
	/**
	 * Возвращает список топ-городов (столиц субъектов)
	 *
	 * @return array
	 */
	
	public function getTopCitiesList() {
		
		$select = $this->_db->select()
				-> from('pw_geo')
				-> where('iscapital=?','yes')
				-> order('IF(sortorder=0,999999999,sortorder), geoname');
				
		return $this->_db->fetchAll($select);
		
	}
	
	
	/**
	 * Возвращает список топ-городов (столиц субъектов) в виде массива пар
	 *
	 * @return array
	 */
	
	public function getTopCitiesListAsPairs() {
		
		$select = $this->_db->select()
				-> from('pw_geo',array('geoid','geoname'))
				-> where('iscapital=?','yes')
				-> order('IF(sortorder=0,999999999,sortorder), geoname');
				
		return $this->_db->fetchPairs($select);
		
	}
	
	
	/**
	 * Сохраняет данные о геообъекте
	 *
	 * @param array $data
	 * @return int | false
	 */
	
	public function saveGeoInfo($data) {
		
		if($this->_db->insert('pw_geo',$data)) {
			
			return $this->_db->lastInsertId();
			
		}
		
		return false;
		
	}
	
	
	/**
	 * Возвращает информацию о геообъекте по id или идентификатору
	 *
	 * @param string | int $identity
	 * @return array
	 */
	
	public function getGeoInfo($identity) {
		
		$select = $this->_db->select()
				-> from('pw_geo');
				
		if(is_int($identity)) {
			$select -> where('geoid=?',(int)$identity);
		} else {
			$select -> where('identity=?',(string)$identity);
		}
				
		return $this->_db->fetchRow($select);
		
	}
	
}